]> dgit.raspbian.org Git - gnome-shell.git/commit
background: fix asynchronous management of background loading operations
authorLionel Landwerlin <llandwerlin@gmail.com>
Mon, 24 Jun 2013 18:13:05 +0000 (19:13 +0100)
committerLionel Landwerlin <llandwerlin@gmail.com>
Wed, 3 Jul 2013 16:03:02 +0000 (17:03 +0100)
commit586ebcd5be68efe7a3cf3734817c26ff2face7de
tree14b65381ce80ade61a581480db3ea698c48eeec8
parent317b9a9c87808b19dd855426fadbd7314bdc837b
background: fix asynchronous management of background loading operations

This fixes a blue background being drawn when switching the monitors
configuration using hardware keys
(clone/multimonitor/external/internal).

The problem is that the shell gather all background loading requests
under the same meta_background_load_file_async call using one
GCancellable (the first one to come). So when the shell receives a
batch of 12 or so XRandr events, it creates 12 new background managers
which end up trying to load 12 times the same background picture. All
of these requests are batched into the same
meta_background_load_file_async using the first GCancellable received
on the first request. Unfortunately, when the first request is
cancelled by the following event indicating a new monitor setup, all
of the background picture requests are dropped on the floor, and
nothing gets loaded (hence the blue screen background).

https://bugzilla.gnome.org/show_bug.cgi?id=703001
js/ui/background.js